#ifndef MAINSCENE_H
#define MAINSCENE_H

#include <QWidget>
#include <QPixmap>
#include <QTimer>
#include "map.h"
#include "heroplane.h"
#include "enemyplane.h"
#include "bomb.h"
#include "GameOverDialog.h"
#include <QSoundEffect>
#include "menu.h"
#include<QFile>
#include<QTextStream>
#include"prop.h"
#include"bossplane.h"
#include"boss_bullet.h"
class MainScene : public QWidget
{
    Q_OBJECT

public:
    MainScene(QWidget *parent = nullptr);
    ~MainScene();

    void onEnemyDestroyed();
    int getPlayer1Score() const { return m_scores[0]; }
        int getPlayer2Score() const { return m_scores[1]; }

       void handleGameOver();
    //道具组
       //生成道具
           void createProp(int x,int y);

           //道具数组
           Prop m_props[PROP_NUM];
           //碰撞检测（拾取道具）
               void collisionDetection_Prop();
    //Boss
               //初始化boss飞机
                   Bossplane m_bossplane;
                   //判断boss机出场的条件
                      void checkBossAppear();
                      //boss机只出现一次
                      int flag=0;



    //初始化场景
    void initScene();

    //启动游戏
    void playGame();

    //更新坐标
    void updatePosition();

    //敌机出场
    void enemyToScene();

    //碰撞检测
    void collisionDetection();

    //绘制事件
    void paintEvent(QPaintEvent *event);

    //键盘事件
    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *event);

    //重置游戏
    void resetGame(bool isCoopMode);
    // 在 MainScene 类中添加以下公共方法
    public:
        void setPlayer1Active(bool active) { m_hero1.m_Free = !active; }
        void setPlayer2Active(bool active) { m_hero2.m_Free = !active; }


    //槽函数
private slots:
    void onRestartGame();
    void onReturnToMenu();

signals:
    void returnToMenuRequested();
private:
    // 修改背景音乐为QSoundEffect
    QSoundEffect m_backgroundSound;

private:
    QTimer m_Timer;          //定时器

    bool m_gameOver; // 游戏结束标志
    bool m_isCoopMode;  // 添加这个成员变量

    //游戏元素
    Map m_map;               //地图
    HeroPlane m_hero1;       //玩家1
    HeroPlane m_hero2;       //玩家2
    EnemyPlane m_enemys[ENEMY_NUM]; //敌机数组

    //爆炸数组
    Bomb m_bombs[BOMB_NUM];

    //敌机出场间隔记录
    int m_recorder;

    //键盘状态记录
    bool m_keyPressed[5];    //玩家1: W(0), S(1), A(2), D(3), 空格(4)
    bool m_keyPressed2[5];   //玩家2: 上(0), 下(1), 左(2), 右(3), 小键盘0(4)


    //得分系统
public:

    void updateScore(int player, int delta);

    void updateScoreDisplay();
    //更新最高得分
        void updatesingleHighestScore();
 void updatecooperateHighestScore();
    //加载最高分
        void loadsingleHighScoreFromFile();
void loadcooperateHighScoreFromFile();
        //保存最高分
        void savesingleHighScoreToFile(int score);
        void savecooperateHighScoreToFile(int score);
    void updateHighScoreDisplay();
    /*void setHighScore(int score) {
            m_highScoreLabel->setText(QString("最高: %1").arg(score));
        }
*/
    bool isCoopMode() const { return m_isCoopMode; }





private:
    QLabel* m_scoreLabel;
    QLabel* m_highScoreLabel;
    int m_scores[2] = {0, 0}; // 玩家1和玩家2的得分


   //boss
    //检测碰撞（英雄飞机与boss机子弹）
        bool collisionDetection_bossBullet();



};
#endif // MAINSCENE_H
